/**
 *
 */
package com.qunar.wan.common_api.service.mapper;

import com.qunar.wan.common_api.model.Query;
import com.qunar.wan.common_api.serializer.RowBounds;

import java.util.List;
import java.util.Map;

/**
 * 数据库公共接口类
 *
 * @author yong, chen
 */
public interface BaseMapper<T> {
    /**
     * 根据多条件查询
     *
     * @param query
     * @return
     */
    List<T> selectByQuery(Query query);

    /**
     * 根据多条件查询相应条数的记录
     *
     * @param map
     * @return
     */
    List<T> selectByQuery(Map map, RowBounds rowBounds);

    /**
     * 根据对象主键删除对应的对象
     *
     * @param primaryKey 对象的
     */
    void deleteByPK(Object primaryKey);

    /**
     * 保存对象到数据库表中
     *
     * @param t 要保存的对象
     */
    void insertObj(T t);

    /**
     * 对象修改
     *
     * @param t 修改的对象
     */
    int updateObj(T t);

    /**
     * 返回count
     *
     * @param query
     * @return
     */
    int selectCount(Query query);

}
